/********************************************************************************
* @file    bsp_tim.c
* @author  jianqiang.xue
* @version V1.1.0
* @date    2023-02-26
* @brief   本文件不再初始化GPIO，由APP_IO完成引脚初始化和复用。
********************************************************************************/

#ifndef __BSP_TIM_H
#define __BSP_TIM_H

/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include "ls_syscfg.h"
/* Private Define ------------------------------------------------------------*/
typedef enum {
    BSP_TIM_0 = 0,
    BSP_TIM_1
} bsp_tim_t;

typedef struct { // pwm hz = sys_clock / (Prescaler+1) / (Period+1)
    uint16_t prescaler;  // 预分频器的值(Prescaler value) 计数器的时钟频率(CK_CNT)等于 fCK_PSC/(PSC[15:0]+1)。
    uint16_t period;     // 周期  计数器的值(Counter value)--CNT
    uint8_t level_logic; // 有效电平   0--低电平  1--高电平
} bsp_tim_cfg_t;
/* Private Typedef -----------------------------------------------------------*/

/* Public Function Prototypes ------------------------------------------------*/
#if LS_TIM1_EN
uint8_t bsp_tim1_pwm_init(bsp_tim_cfg_t *cfg);
void bsp_tim1_pwm_deinit(void);
void bsp_tim1_pwm_ch_en(uint8_t ch, uint8_t en);
#endif

#if LS_TIM2_EN
uint8_t bsp_tim2_pwm_init(bsp_tim_cfg_t *cfg);
void bsp_tim2_pwm_deinit(void);
void bsp_tim2_pwm_ch_en(uint8_t ch, uint8_t en);
#endif

void bsp_tim_set_period(bsp_tim_t tim_id, uint16_t period);
#endif
